[% setvar title The Perl 6 Summary of the week ending 20031026 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary of the week ending 20031026'></a><h1>The Perl 6 Summary of the week ending 20031026</h1>
<p>Where does the time go? It seems like only yesterday that I was sat
hiding Leon Brocard in the first letters of the first 11 body
paragraphs of the last summary. Now, here I am, on the train, typing
away in a desperate attempt to get this mailed out before
Wednesday. Let's start with perl6-internals again.</p>
<a name='Object Freezing'></a><h2>Object Freezing</h2>
<p>Whoever would have thought that freezing objects would be so
controversial? Object freezing is when you take an object and generate
a 'frozen' representation of it that can be used to make a copy of the
original object. It's what Storable, Data::Dumper and YAML (to name
three Perl 5 modules) all do more or less successfully. (Most of the
time there's no problem, the tricky case is a composite object which
involves a circular data structure. Consider this:</p>
<pre>
    Ring -&gt; A -&gt; B -&gt; C -&gt; D
            ^              |
            `--------------'</pre>
<p>(It's not <i>quite</i> a purely academic example, I can point to at least
one text editor that uses a similar data structure).</p>
<p>When you come to freeze your ring, you need some way of detecting the
cycle and generating a finite representation that works.  This isn't
the only problem; thread safety is hard, for instance.)</p>
<p>Dan's set some fairly stringent requirements on whatever mechanism is
used for freezing. The most important/stringent is the requirement
that (because freezing during object destruction will be a
possibility) object traversal is not allowed to use additional memory
for that traversal.</p>
<p>Dan is convinced that we can do this using the Garbage Collector's
object traversal system. Leo T&ouml;tsch is equally convinced that
we can't. The resulting thread is rather meaty and hard to summarize
without massive amounts of cut and paste so I'll just point you at
the root message. The upshot is that we're doing it Dan's way;
Glorious Leader continues to trump Pumpking Patchmonster.</p>
<p>In another subthread there was a good deal of misunderstanding about
XML declarations and parsing, which got cleared up surprisingly
quickly.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310201437430.399@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='Object Instantiation'></a><h2>Object Instantiation</h2>
<p>Dan had a moment of clarity and declared that the Parrot Way to
instantiate an object in class Foo will be:</p>
<pre>  new P5, .Foo</pre>
<p>All we need now is a working implementation. And, apparently, knowing
what class a class is a member of might be handy, but Dan's punting
on (&quot;ignoring the heck out of&quot;) that one.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310211010440.20236@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='A less controversial API addition'></a><h2>A less controversial API addition</h2>
<p>In the middle of the discussion about object freezing, Dan popped up
another thread to discuss how to invoke Sub/Method PMCs from C
code. So Leo implemented <code>Parrot_runops_fromc_args()</code>, but he's not
exactly happy about the name. Regardless of the name, having this
implemented is rather spiffy.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310211059270.20236@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='Old Big Problems before New Big Problems'></a><h2>Old Big Problems before New Big Problems</h2>
<p>Melvin Smith popped up with a rant about the Parrot development
effort's tendency to rush off to implement new stuff before making
double sure about the 'old' stuff is actually complete and robust. To
which I can only say &quot;Hear! Hear!&quot; Dan agreed, and threatened to give
Melvin the pumpkin after Leo had finished with it.</p>
<p><a href='http://groups.google.com/groups?threadm=OFCEA1143A.08EE30F7-ON85256DC6.00602BD2-85256DC6.0062F33E@us.ibm.com' target='_blank'>groups.google.com</a></p>
<a name='Class metadata for PIR/assembly files'></a><h2>Class metadata for PIR/assembly files</h2>
<p>Donning his designer's cap again, Dan posted a rough spec for class
metadata declarations in PIR and pasm files. It looks pretty decent
to me. Melvin Smith made a few telling comments though, so it looks
like Dan's post isn't quite the final word on the matter.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310211444150.20236@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='Class creation in bytecode'></a><h2>Class creation in bytecode</h2>
<p>Mere moments after the metadata post, Dan went on to spec out the
assembly language needed to support it.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310211520570.20236@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='Open Patches'></a><h2>Open Patches</h2>
<p>Leo pointed everyone at <a href='http://www.parrotcode.org/openpatches/,' target='_blank'>www.parrotcode.org</a>
the list of open Parrot patches and asked for a volunteer to go
through and make sure that the list is in agreement with reality.</p>
<p><a href='http://groups.google.com/groups?threadm=3F966072.109@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Leo's notes on objects and classes'></a><h2>Leo's notes on objects and classes</h2>
<p>Leo posted a list of thoughts about how classes and objects will work
in Parrot and offered a suggestion about using OrderedHashes to
handle things.</p>
<p><a href='http://groups.google.com/groups?threadm=3F9682D9.2020108@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Unifying vtables and method invocations'></a><h2>Unifying vtables and method invocations</h2>
<p>Leo wondered if we should arrange things so that PMC vtables could be
invoked in the same way as in methods on Parrot level objects are
invoked. Dan answered that it won't be quite like that, but it will
be close. (Yay! A reflective programmer writes).</p>
<p><a href='http://groups.google.com/groups?threadm=3F968934.4000504@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='More fixed number assignments'></a><h2>More fixed number assignments</h2>
<p>So, it turns out that adding PMC classes to the core breaks binary
compatibility. Which needs fixing. Dan asked for volunteers. I'm
afraid I don't know what fixing it would entail.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310221538200.19973@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<a name='Plotz!'></a><h2>Plotz!</h2>
<p>Plotz (the Pol(l)y-Lingual Opcode Translation for the Z-machine) is
Amir Karger's shot at Parrot immortality by getting Parrot to run
Infocom adventures. Right now he's prototyping his design in Perl and
he's apparently 10 opcodes away from a tool that will run around two
thirds of all released Infocom games. He's rather happy about this.</p>
<p><a href='http://groups.google.com/groups?threadm=20031022195153.2773.qmail@web40709.mail.yahoo.com' target='_blank'>groups.google.com</a></p>
<a name='Halloween Release'></a><h2>Halloween Release</h2>
<p>Melvin Smith proposed a &quot;just for fun&quot; Halloween release of
Parrot. Dan christened the putative release &quot;The Screaming Pumpkin&quot;,
and Leo thought there was a little too much stuff in flux at the
moment. Me? I think it's going to happen. The codename is too good to
resist.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031022212058.06211230@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='IMCC leaves the languages ghetto'></a><h2>IMCC leaves the languages ghetto</h2>
<p>Melvin Smith checked in a large patch to move IMCC from
<b><i>parrot/languages/imcc/</i></b> to <b><i>parrot/imcc</i></b>, reflecting the
intention/reality that IMCC <i>is</i> parrot. As the week progressed,
various other directories got moved around in an attempt to make
things a little more logical. Everything is now, roughly in its
place, but at one point during the week it would have been, frankly,
foolhardy to attempt to check parrot out of CVS.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031022222631.02026000@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='IMCC, Classes &amp; Metadata, oh my!'></a><h2>IMCC, Classes &amp; Metadata, oh my!</h2>
<p>Melvin Smith, who has returned from his Parrot holiday with a
seemingly enormous supply of tuits, announced that he'd started work
on implementing the class syntax for PIR and had reached a decision
point, so he asked for comments. The consensus was to go with a short
term hack for the time being, just to get something working, with a
big flag for the future.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031023223907.045d8ec8@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='PIR changes'></a><h2>PIR changes</h2>
<p>For those of you who are implementing things in IMCC, Melvin
announced that he'd added <code>newsub</code> and <code>newclosure</code> to
IMCC, allowing implementors to simply write
<code>P0 = newsub &lt;label&gt;</code> and <code>P0 = newclosure &lt;label&gt;</code> which
is rather more efficient than the PASM equivalents.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031025001450.051fd768@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='PMC initialization'></a><h2>PMC initialization</h2>
<p>Dan decided that the time has come to allow PMCs to be created with
initialization data rather than having separate creation and
initialization phases. Hes proposal, pending a Better Idea(tm) was to
have two <code>init</code> methods, one taking no arguments and simply creating
an empty PMC, and another which assumes that its parameters are in
the registers (using the standard calling conventions) and goes from
there. Leo thought it was a little heavy. I like it though, the more
things that use standard Parrot calling conventions, the less I have
to remember and the happier I am -- but I am a bear of very little brain.</p>
<p><a href='http://groups.google.com/groups?threadm=a05210607bbc06d9b76f4@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='Meanwhile, in perl6-language'></a><h1>Meanwhile, in perl6-language</h1>
<p>Luke Palmer asked a question about named named return values and
<code>:=</code>. David Storrs boggled slightly.</p>
<p>Next week, Damian Conway answers Luke's question.</p>
<p><a href='http://groups.google.com/groups?threadm=20031024065718.GA13746@babylonia.flatirons.org' target='_blank'>groups.google.com</a></p>
<a name='Acknowledgements, Announcements, Apologies'></a><h1>Acknowledgements, Announcements, Apologies</h1>
<p>Looks like the Wednesday ship date of the last summary was a
temporary aberration. Which is nice.</p>
<p>If you found this summary valuable, please consider one or more of:</p>
<ul>
<li><a name='Donating time to the project. We need more programmers, documenters language implementers and generally useful people. dev.perl.org/perl6/ and www.parrotcode.org/ have details of mailing lists etc.'></a>Donating time to the project. We need more programmers, documenters
language implementers and generally useful
people. <a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> and
<a href='http://www.parrotcode.org/' target='_blank'>www.parrotcode.org</a> have details of mailing lists etc.</li>
<li><a name='Donating money to the Perl Foundation (donate.perl-foundation.org/) to help support Larry, Dan and Damian and enable them to spend more time working on Perl 6, rather than petty things like making sure they're earning enough money to feed themselves.'></a>Donating money to the Perl Foundation
(<a href='http://donate.perl-foundation.org/)' target='_blank'>donate.perl-foundation.org</a> to help support Larry, Dan
and Damian and enable them to spend more time working on Perl 6,
rather than petty things like making sure they're earning enough
money to feed themselves.</li>
<li><a name='Donating feedback to your summarizer (p<a href='mailto:6summarizer@bofh.org.uk'>6summarizer@bofh.org.uk</a>).'></a>Donating feedback to your summarizer (<i><a href='http://search.cpan.org/perldoc?<a href='mailto:p6summarizer@bofh.org.uk'>p6summarizer@bofh.org.uk</a>'>p<a href='mailto:6summarizer@bofh.org.uk'>6summarizer@bofh.org.uk</a></a></i>).</li>
</ul>
</div>
